﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using System.Data;
using System.Data.SqlClient;

namespace DAO
{
    public class ChuyenXeDAO : AbstractDAO<ChuyenXeDTO>
    {

        protected override string GetTableName()
        {
            return "chuyenxe";
        }

        public ChuyenXeDTO GetFullByDataRow(System.Data.DataRow data)
        {
            ChuyenXeDTO chuyenXe = new ChuyenXeDTO();
            int id, soGheTrong;
            double giaVe;
            int.TryParse(data["id"].ToString(), out id);
            int.TryParse(data["soghetrong"].ToString(), out soGheTrong);
            double.TryParse(data["giave"].ToString(), out giaVe);
            chuyenXe.Id = id;
            chuyenXe.SoGheTrong = soGheTrong;
            chuyenXe.GiaVe = giaVe;
            chuyenXe.TenXe = data["tenxe"].ToString();
            chuyenXe.TenTuyenDuong = data["TenTuyenDuong"].ToString();
            chuyenXe.XuatPhat = DateTime.Parse(data["thoigianxuatphat"].ToString());
            chuyenXe.DenNoi = DateTime.Parse(data["thoigianden"].ToString());
            chuyenXe.NgayLenLich = DateTime.Parse(data["ngaytao"].ToString());

            return chuyenXe;
        }

        public override List<ChuyenXeDTO> GetAll()
        {
            List<ChuyenXeDTO> ls = new List<ChuyenXeDTO>();
            String query =
                "EXEC [Proc_GetChuyenXe]";
            DataTable dt = dataProvider.ExecuteQuery(query);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow r in dt.Rows)
                {
                    ChuyenXeDTO p = GetFullByDataRow(r);
                    ls.Add(p);
                }
            }
            return ls;
        }

        public bool AddNew(ChuyenXeDTO chuyenXeDTO)
        {
            IList<SqlParameter> listParameter = new List<SqlParameter>();
            listParameter.Add(new SqlParameter("@XeId", chuyenXeDTO.XeId));
            listParameter.Add(new SqlParameter("@TuyenDuongId", chuyenXeDTO.TuyenDuongId));
            listParameter.Add(new SqlParameter("@XuatPhat", chuyenXeDTO.XuatPhat));
            listParameter.Add(new SqlParameter("@DenNoi", chuyenXeDTO.DenNoi));
            listParameter.Add(new SqlParameter("@GiaVe", chuyenXeDTO.GiaVe));

            SqlParameter sqlThongBao = new SqlParameter("@ThanhCong", SqlDbType.Bit);
            sqlThongBao.Direction = System.Data.ParameterDirection.Output;
            listParameter.Add(sqlThongBao);

            this.dataProvider.ExecuteStoreProc(
                "Proc_ThemChuyenXe",
                listParameter);
            return (bool)sqlThongBao.Value;
        }

        public override ChuyenXeDTO GetByDataRow(DataRow data)
        {
            ChuyenXeDTO chuyenXe = new ChuyenXeDTO();
            int id, soGheTrong;
            double giaVe;
            int.TryParse(data["id"].ToString(), out id);
            int.TryParse(data["soghetrong"].ToString(), out soGheTrong);
            double.TryParse(data["giave"].ToString(), out giaVe);
            chuyenXe.Id = id;
            chuyenXe.SoGheTrong = soGheTrong;
            chuyenXe.GiaVe = giaVe;
            chuyenXe.XuatPhat = DateTime.Parse(data["thoigianxuatphat"].ToString());
            chuyenXe.DenNoi = DateTime.Parse(data["thoigianden"].ToString());
            chuyenXe.NgayLenLich = DateTime.Parse(data["ngaytao"].ToString());

            return chuyenXe;
        }
    }
}